﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AGPR.Locadora.Desktop
{
    public class Session
    {
        #region Atributos

        /// <summary>
        /// Instância da Classe Singleton
        /// </summary>
        private static Session instancia;
        public static Session Instancia
        {
            get
            {
                if (instancia == null)
                {
                    instancia = new Session();
                }

                return instancia;
            }
        }

        /// <summary>
        /// Dicionário onde ficará salvo as variáveis da Sessão
        /// </summary>
        private Dictionary<string, dynamic> storage = new Dictionary<string,dynamic>();

        #endregion

        #region get

        /// <summary>
        /// Retorna uma Variável da Sessão
        /// </summary>
        /// <param name="variavel"></param>
        /// <returns></returns>
        public dynamic get(string variavel)
        {
            if (this.storage.ContainsKey(variavel))
            {
                return this.storage[variavel];
            }

            return null;            
        }

        #endregion

        #region set

        /// <summary>
        /// Adiciona/Altera uma variável na Sessão
        /// </summary>
        /// <param name="variavel">Nome da Variável</param>
        /// <param name="valor">Valor da Variável</param>
        public void set(string variavel, dynamic valor)
        {
            this.storage[variavel] = valor;
        }

        /// <summary>
        /// Adiciona/Altera várias váriaveis na Sessão
        /// </summary>
        /// <param name="lista">Dicionário dos itens</param>
        public void set(Dictionary<string, dynamic> lista)
        {
            foreach (var item in lista)
            {
                this.set(item.Key, item.Value);
            }
        }

        #endregion
    }
}
